// 示例1：筛选数字数组中大于10的元素
const numbers = [5, 12, 8, 21, 3, 15];
const largeNumbers = numbers.filter(num => num > 10);
console.log(largeNumbers); // 输出: [12, 21, 15]


// 示例2：筛选对象数组中符合条件的元素
const products = [
  { name: "手机", price: 3999, inStock: true },
  { name: "电脑", price: 5999, inStock: false },
  { name: "平板", price: 2999, inStock: true }
];

// 筛选有库存且价格低于4000的商品
const affordableProducts = products.filter(product =>
  product.inStock && product.price < 4000
);
console.log(affordableProducts);
// 输出: [{ name: "手机", price: 3999, inStock: true }]


// 示例3：结合索引筛选（排除索引为1的元素）
const fruits = ["苹果", "香蕉", "橙子", "香蕉"];
const filteredFruits = fruits.filter((fruit, index) => index !== 1);
console.log(filteredFruits); // 输出: ["苹果", "橙子", "香蕉"]


// 示例4：筛选非空值（去除数组中的空字符串、null、undefined）
const mixed = ["a", "", null, "b", undefined, "c"];
const nonEmpty = mixed.filter(item => item);
console.log(nonEmpty); // 输出: ["a", "b", "c"]

/*
返回新数组：filter() 不会修改原数组，而是返回筛选后的新数组。
保留所有符合条件的元素：与 find() 只返回第一个匹配项不同，filter() 会返回所有符合条件的元素。
不改变原数组长度：新数组的长度取决于符合条件的元素数量（可能为空数组）。
遍历所有元素：即使已经找到所有符合条件的元素，也会遍历完整个数组。
* */
